package manager.controller;


import manager.dao.StudentDao;
import manager.domain.Student;
import manager.service.StudentService;

import java.util.Scanner;

public class StudentController {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        lo:
        while (true) {
            System.out.println("------欢迎来到学生系统------");
            System.out.println("请输入你的选择: 1 添加学生 2 删除学生 3 修改学生 4 查看学生 5 返回");
            String next = sc.next();
            switch (next) {
                case "1":
                    addStudents();
                    break;
                case "2":
                    DeleteStudent();
                    break;
                case "3":
                    UpdateStudent();
                    break;
                case "4":
                    findAllStudent();
                    break;
                case "5":
                    break lo;
                default:
                    System.out.println("你输入的有误,请重新输入");
            }

        }

    }

    private static void addStudents() {
        //  1. 键盘录入学生信息

        Scanner sc = new Scanner(System.in);

        String Id;
        //使用无限循环包裹录入ID语句
        //创建boolean类型接收isExists判断(ID)是否存在的方法赋值给一个变量接收(先调用在定义)

        while (true) {
            System.out.println("请输入学生ID");
            Id = sc.next();

            boolean fla = StudentService.isExsiti(Id);
            //如果变量结果为true返回已被占用,,为 false break退出当前循环
            if (fla) {
                System.out.println("你输入的ID已被占用,请重新输入");

            } else {

                break;
            }


        }

        System.out.println("请输入学生姓名");
        String Name = sc.next();
        System.out.println("请输入年龄");
        String Age = sc.next();
        System.out.println("请输入学生出生日期");
        String Birthday = sc.next();

        //   2. 将学生信息封装成一个对象
        Student stut = new Student();
        //调用set方法并赋值(静态)
        stut.setId(Id);
        stut.setName(Name);
        stut.setAge(Age);
        stut.setBirthday(Birthday);
        //   3. 创建对象将学生对象传递给业务员(Services)中的addStudent方法(先调用再创建)
        StudentService studentService = new StudentService();
        //调用该业务员中add添加方法并一个返回给boolean类型的变量,把录入的stus学生信息传给对象中

        boolean flag = studentService.addStudent(stut);

        //   4. 根据返回的boolean类型结果,在控制台打印成功\失败

        if (flag) {
            System.out.println("添加成功");
        } else {
            System.out.println("添加失败");
        }

    }


    //删除方法
    private static void DeleteStudent() {
        Scanner scanner = new Scanner(System.in);
        String next;
        while (true) {
           //接收要删除的学生ID
            System.out.println("请输入要需删除的学生ID");
            next = scanner.next();
            //调用业务员里的isExists方法(查看是否有该ID),并把新的ID传进去,返回给一个boolean类型的变量
            boolean num = StudentService.isExsiti(next);
            //判断返回的变量为(!的变量 )你输入的ID不存在  /false 直接break继续修改,

            if (!num) {
                System.out.println("你输入的ID不存在请重新输入");

            }
            //    3.调用Student Services调用业务员中的DeleteStudents方法,根据传入的ID删除学生,并提示删除成功(break)
            StudentService.DeletStudent(next);

            System.out.println("删除成功");
            break;




        }
    }

    //   find All Student(方法)
    private static void findAllStudent() {

        //    1.  调用业务员里的方法,得到学生数组(先调用再创建)

        StudentService.findAllStudent();
        //
        Student[] students = StudentDao.findAllStudent();
        //  3.遍历数组,判断数组!=null的元素并使用get方法获取学生元素然后把学生信息打印到控制台(break退出)

        System.out.println("学生ID"+"\t" + "学生姓名"+"\t" + "学生年龄" +"\t\t"+ "出生日期");
        for (int i = 0; i < students.length; i++) {
            Student res = students[i];
            if (res != null) {
                System.out.println(res.getId()+"\t" + res.getName()+"\t" + res.getAge()+"\t\t" + res.getBirthday());
                break;
            }
        }


    }


    private static void UpdateStudent() {
        //键盘录入接收要修改的学生ID(无限循环包裹)
        Scanner scanner = new Scanner(System.in);
        String next;
        while (true) {

            System.out.println("请输入要需修改的学生ID");
            next = scanner.next();
            //调用业务员里的isExists方法(查看是否有该ID),并把新的ID传进去,返回给一个boolean类型的变量接收
            boolean num = StudentService.isExsiti(next);
            //判断返回的变量为!true你输入的ID不存在  /false 直接break继续修改,

            if (!num) {
                System.out.println("你输入的ID不存在请重新输入");

            } else {
                break;
            }
        }
        //继续使用新的set方法获取新的学生信息
        // 调用services业务员里Update方法把原始ID和新ID传进去(先调用再修改) 输出修改成功


        System.out.println("请输入学生姓名");
        String next1 = scanner.next();
        System.out.println("请输入学生年龄");
        String next2 = scanner.next();
        System.out.println("请输入学生出生日期");
        String next3 = scanner.next();
        Student newstudent = new Student();
        newstudent.setId(next);
        newstudent.setName(next1);
        newstudent.setAge(next2);
        newstudent.setBirthday(next3);

        StudentService.UpdateStudent(next,newstudent);

        System.out.println("修改成功");


    }

}



